IAMロールをEC2インスタンスに設定をしてみた
こんにちは。イムチェジョンです。
今回のブログではIAMロールをEC2インスタンスに設定をし、インスタンスの中でawsコマンドを実行してみたいと思います。
アジェンダ
- インスタンスでawsコマンドテスト
- IAMロールの作成
- IAMロールをEC2インスタンスに設定
- もう一回インスタンスでawsコマンドテスト
- まとめ
1. インスタンスでawsコマンドテスト
EC2 Linux インスタンスにCLIが設置されているのを確認します。
$ aws --version aws-cli/1.18.147 Python/2.7.18 Linux/4.14.238-182.422.amzn2.x86_64 botocore/1.18.6
その後コマンドを実行してみるとエラーが出てきます。
エラーの内容は資格証明がされてないので、aws configure
コマンドを使って資格証明をしてほしいということです。
$ aws iam list-users Unable to locate credentials. You can configure credentials by running "aws configure".
実際にコマンドを実行すると設定は可能になりますが、EC2インスタンスの中に資格証明のデータが残ることになります。
そうなるとセキュリティに大きな問題になると思います。
$ aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]:
なので、aws configure
の設定をしなくても良いようにIAMロールをEC2インスタンスに設定しましょう。
2. IAMロールの作成
IAMロールを作成しましょう。
AWSサービスの中でEC2を選択します。
簡単なテストのなめにIAMユーザーの一覧を表示する予定なので、IAMReadOnlyAccess
ポリシーを追加します。
IAMロールの名前を入力し、作成をします。
作成されたIAMロールを確認してみると、IAMReadOnlyAccess
ポリシーが成功的に追加されています。
3. IAMロールをEC2インスタンスに設定
インスタンスのセキュリティ部分にどんなIAMロールが設定されているか見れます。今は何も設定されてないです。
IAMロールを設定するためにインスタンスを選択します。
アクション
>セキュリティ
>IAMロールを変更
の順にクリックします。
上で作成したIAMロールを選択して保存します。
インスタンスページのセキュリティ部分で設定されているのを確認したらIAMロールの設定の完了です。
4. もう一回インスタンスでawsコマンドテスト
設定が完了されたので、最初に実行したコマンドをもう一回実行してみましょう。
$ aws iam list-users { "Users": [ { "UserName": "amplify-user", "Path": "/", "CreateDate": "2021-07-15T02:35:43Z", "UserId": "*********************", "Arn": "arn:aws:iam::************:user/amplify-user" }, { "UserName": "cli_user", "Path": "/", "CreateDate": "2021-07-29T06:47:03Z", "UserId": "*********************", "Arn": "arn:aws:iam::************:user/cli_user" } ] }
よく実行されました。
これでaws configure
の設定をする必要なく、awsコマンドを実行できるようになりました。
5. まとめ
今回はIAMロールをEC2インスタンスに設定をしてみました。こうすることでIAMロールに含まれているポリシーをEC2インスタンスで使えるようになります。